package cn.ygh.bbo.system.bean;
import cn.ygh.bbo.common.annotation.Excel;
import cn.ygh.bbo.framerwork.core.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;

import java.util.*;
import lombok.Data;
import org.apache.commons.lang3.builder.*;
/**
* 描述：全局配置
* @author ygh
*/
@TableName("global_config")
@Data
public class GlobalConfig extends BaseEntity {
    /*数据库字段——start*/
    /**
    * 序号
    */
    @Excel("序号")
    @TableId(type = IdType.AUTO)
    @TableField(value = "id")
    private Integer id;

    /**
    * 整数1
    */
    @Excel("整数1")
    @TableField(value = "int_value1")
    private Integer intValue1;

    /**
    * 整数2
    */
    @Excel("整数2")
    @TableField(value = "int_value2")
    private Integer intValue2;

    /**
    * 浮点数1
    */
    @Excel("浮点数1")
    @TableField(value = "double_value1")
    private Double doubleValue1;

    /**
    * 浮点数2
    */
    @Excel("浮点数2")
    @TableField(value = "double_value2")
    private Double doubleValue2;

    /**
    * 字符串1
    */
    @Excel("字符串1")
    @TableField(value = "tex_valuet1")
    private String texValuet1;

    /**
    * 字符串2
    */
    @Excel("字符串2")
    @TableField(value = "text_value2")
    private String textValue2;

    /**
    * 描述
    */
    @Excel("描述")
    @TableField(value = "description")
    private String description;

    /**
    * 创建时间
    */
    @Excel("创建时间")
    @TableField(value = "gmt_create")
    private Date gmtCreate;


    /*数据库字段——end*/

    /**
    * 默认值设置
    * @return
    */
    public GlobalConfig def(){
        return this;
    }

     /*构造函数——start*/
    public GlobalConfig() {
    }

    public GlobalConfig(Integer id) {
        this.id=id;
    }

    /**
    *构造函数
    */
    public GlobalConfig(Integer intValue1,Integer intValue2,Double doubleValue1,Double doubleValue2,String texValuet1,String textValue2,String description,Date gmtCreate) {
        this.intValue1=intValue1;
        this.intValue2=intValue2;
        this.doubleValue1=doubleValue1;
        this.doubleValue2=doubleValue2;
        this.texValuet1=texValuet1;
        this.textValue2=textValue2;
        this.description=description;
        this.gmtCreate=gmtCreate;
    }
    /*构造函数——end*/

    /*非数据库字段——start*/
    /**
    * 创建时间开始
    */
    @TableField(exist = false)
    private Date gmtCreateBeginValue;

    /**
    * 创建时间结束
    */
    @TableField(exist = false)
    private Date gmtCreateEndValue;

    /*非数据库字段——end*/

    /**
	 * Hash，同所有字段相加判断
	 */
	@Override
	public int hashCode() {
		if(getId()==null){
            return new HashCodeBuilder()
            .append(getIntValue1())
            .append(getIntValue2())
            .append(getDoubleValue1())
            .append(getDoubleValue2())
            .append(getTexValuet1())
            .append(getTextValue2())
            .append(getDescription())
            .append(getGmtCreate())
			.toHashCode();
        }
		return new HashCodeBuilder()
			.append(getId())
			.toHashCode();
	}
    /**
	 * 重写，对象是否相同，用ID来判断
	 */
	@Override
	public boolean equals(Object obj) {
		if(!(obj instanceof GlobalConfig)) {
			return false;
		}
		if(this == obj) {
			return true;
		}
        GlobalConfig other = (GlobalConfig)obj;
		return new EqualsBuilder()
			.append(getId(),other.getId())
			.isEquals();
	}
	/**
	 * 转文本
	 */
	@Override
	public String toString() {
		return new ToStringBuilder(this,ToStringStyle.SHORT_PREFIX_STYLE)
			.append(super.toString())
            .append(",Id",getId())
            .append(",IntValue1",getIntValue1())
            .append(",IntValue2",getIntValue2())
            .append(",DoubleValue1",getDoubleValue1())
            .append(",DoubleValue2",getDoubleValue2())
            .append(",TexValuet1",getTexValuet1())
            .append(",TextValue2",getTextValue2())
            .append(",Description",getDescription())
            .append(",GmtCreate",getGmtCreate())
			.toString();

	}

/*
//精简构造 全局配置
GlobalConfig globalConfig = new GlobalConfig(
            intValue1 //整数1
            ,intValue2 //整数2
            ,doubleValue1 //浮点数1
            ,doubleValue2 //浮点数2
            ,texValuet1 //字符串1
            ,textValue2 //字符串2
            ,description //描述
            ,gmtCreate //创建时间
);
*/
}